package com.gl.organigrama.services.impl;

import org.springframework.beans.factory.InitializingBean
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component

import com.gl.organigrama.services.IFuncionarioServices
import com.gl.organigrama.services.INodoServices
import com.gl.organigrama.vos.Funcionario
import com.gl.organigrama.vos.Nodo


@Component
public class Bootstrap implements InitializingBean{

	@Autowired
	INodoServices nodoService;

	@Autowired
	IFuncionarioServices funcionarioService;

	@Override
	public void afterPropertiesSet() throws Exception {
		buildTree(ChartData.initialData())

	}



	private Nodo buildTree(def tree){

		Nodo nodo = new Nodo(cargo: tree.cargo, sigla: tree.sigla, funcionario: createFuncionario(tree.funcionario), estilo: tree.estilo, esNodoBase: tree.esNodoBase?:false)
		//lo guardo aca para que el root tenga id 1
		nodoService.salvarNodo(nodo)
		if(tree.children){
			nodo.hijosNivelUno = []
			for(def child:tree.children){
				nodo.hijosNivelUno << buildTree(child)
			}
		}
		
		if(tree.innerChildren){
			nodo.hijosNivelDos = []
			for(def child:tree.innerChildren){
				nodo.hijosNivelDos << buildTree(child)
			}
		}

		return nodoService.salvarNodo(nodo)
	}

	private Funcionario createFuncionario(String name){
		Funcionario funcionario = new Funcionario(nombre: name)
		return funcionarioService.salvarFuncionario(funcionario)
	}

}
